home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / BORL_TIP / TI100 / TI175.ASC < prev    next >
Text File  |  1991-09-11  |  26KB  |  1,057 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  10.   VERSION : 1.05A
  11.        OS : PC-DOS
  12.      DATE : July 8, 1986                                PAGE : 1/18
  13.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  14.  
  15.  
  16.  
  17.  
  18.   This handout contains updates for the following:
  19.  
  20.  
  21.  
  22.   RUN-TIME ERROR 92 IN WINDOWX, WINDOWY AND CLIP      PAGE 1
  23.  
  24.   WORLD COORDINATES UPDATE                            PAGE 7
  25.  
  26.   BAR CHART MODULE                                    PAGE 9
  27.  
  28.   POLYGON DRAWING MODULE                              PAGE 13
  29.  
  30.   WINDOW MOVE UPDATE                                  PAGE 18
  31.  
  32.            RUN-TIME ERROR 92 IN WINDOWX, WINDOWY AND CLIP
  33.  
  34.   This  patch eliminates runtime error 92 in the WindowX,  WindowY,  and
  35.   Clip routines.
  36.  
  37.   The following routines are found in the file called "KERNEL.SYS".
  38.  
  39.   Change the WindowX function to read as follows:
  40.  
  41.   function WindowX(x:real):integer;
  42.   var
  43.     Temp : real;
  44.   begin
  45.     Temp := AxGlb + BxGlb * x;
  46.     if Temp > MaxInt then
  47.       WindowX := MaxInt
  48.     else if Temp < $8001 then
  49.       WindowX := $8001
  50.     else
  51.       WindowX := trunc(Temp);
  52.   end;
  53.  
  54.  
  55.   Change the WindowY funtion to read as follows:
  56.  
  57.   function WindowY(y:real):integer;
  58.   var
  59.     Temp : real;
  60.   begin
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  76.   VERSION : 1.05A
  77.        OS : PC-DOS
  78.      DATE : July 8, 1986                                PAGE : 2/18
  79.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  80.  
  81.  
  82.  
  83.  
  84.     Temp := AyGlb + ByGlb * y;
  85.     if Temp > MaxInt then
  86.       WindowY := MaxInt
  87.     else if Temp < $8001 then
  88.       WindowY := $8001
  89.     else
  90.       WindowY := trunc(Temp);
  91.   end;
  92.  
  93.   RUN-TIME ERROR IN WINDOWX, WINDOWY AND CLIP, Continued:
  94.  
  95.   Change the Clip function to read as follows:
  96.  
  97.   function clip(var x1,y1,x2,y2:integer):boolean;
  98.  
  99.     var ix1,iy1,ix2,iy2,dummy,X1Loc,X2Loc:integer;
  100.         ClipLoc:boolean;
  101.         Temp : real;
  102.  
  103.     function inside(x,xx1,xx2:integer):integer;
  104.       begin
  105.         inside:=0;
  106.         if x<xx1 then inside:=-1
  107.         else if x>xx2 then inside:=1;
  108.       end;
  109.  
  110.     begin
  111.       clip:=true;
  112.       ClipLoc:=true;
  113.       if ClippingGlb then
  114.        begin
  115.         if HatchGlb then
  116.          begin
  117.           X1Loc:=X1RefGlb;
  118.           X2Loc:=X2RefGlb;
  119.          end
  120.         else
  121.          begin
  122.           X1Loc:=X1RefGlb shl 3;
  123.           X2Loc:=X2RefGlb shl 3 +7;
  124.          end;
  125.  
  126.   RUN-TIME ERROR 92 IN WINDOWX, WINDOWY AND CLIP, Continued:
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  142.   VERSION : 1.05A
  143.        OS : PC-DOS
  144.      DATE : July 8, 1986                                PAGE : 3/18
  145.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  146.  
  147.  
  148.  
  149.  
  150.         ix1:=inside(x1,X1Loc,X2Loc);
  151.         iy1:=inside(y1,Y1RefGlb,Y2RefGlb);
  152.         ix2:=inside(x2,X1Loc,X2Loc);
  153.         iy2:=inside(y2,Y1RefGlb,Y2RefGlb);
  154.         if (ix1 or ix2 or iy1 or iy2)<>0 then
  155.          begin
  156.           if x1<>x2 then
  157.            begin
  158.             if ix1<>0 then
  159.              begin
  160.               if ix1<0 then dummy:=X1Loc else dummy:=X2Loc;
  161.               if y2<>y1 then
  162.               begin                             { Changes start here }
  163.          Temp := (y2-y1)/(x2-x1)*(dummy-x1);
  164.                 if Temp > MaxInt then
  165.                   Temp := MaxInt
  166.                 else if Temp < $8001 then
  167.                   Temp := $8001;
  168.                 y1:=y1+trunc(Temp);
  169.               end;                                { Changes end here }
  170.               x1:=dummy;
  171.              end;
  172.             if (ix2<>0) and (x1<>x2) then
  173.              begin
  174.               if ix2<0 then dummy:=X1Loc else dummy:=X2Loc;
  175.               if y2<>y1 then
  176.               begin                             { Changes start here }
  177.                 Temp := (y2-y1)/(x2-x1)*(dummy-x1);
  178.                 if Temp > MaxInt then
  179.                   Temp := MaxInt
  180.                 else if Temp < $8001 then
  181.                   Temp := $8001;
  182.                 y2:=y1+trunc(Temp);
  183.               end;                                { Changes end here }
  184.               x2:=dummy;
  185.              end;
  186.  
  187.   RUN-TIME ERROR 92 IN WINDOWX, WINDOWY AND CLIP, Continued:
  188.  
  189.             iy1:=inside(y1,Y1RefGlb,Y2RefGlb);
  190.             iy2:=inside(y2,Y1RefGlb,Y2RefGlb);
  191.            end;
  192.           if y1<>y2 then
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  208.   VERSION : 1.05A
  209.        OS : PC-DOS
  210.      DATE : July 8, 1986                                PAGE : 4/18
  211.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  212.  
  213.  
  214.  
  215.  
  216.            begin
  217.             if iy1<>0 then
  218.              begin
  219.               if iy1<0 then dummy:=Y1RefGlb else dummy:=Y2RefGlb;
  220.               if x1<>x2 then
  221.               begin                             { Changes start here }
  222.                 Temp := (x2-x1)/(y2-y1)*(dummy-y1);
  223.                 if Temp > MaxInt then
  224.                   Temp := MaxInt
  225.                 else if Temp < $8001 then
  226.                   Temp := $8001;
  227.                 x1:=x1+trunc(Temp);
  228.               end;                                { Changes end here }
  229.               y1:=dummy;
  230.              end;
  231.             if iy2<>0 then
  232.              begin
  233.               if iy2<0 then dummy:=Y1RefGlb else dummy:=Y2RefGlb;
  234.               if x1<>x2 then
  235.               begin                             { Changes start here }
  236.                 Temp := (x2-x1)/(y2-y1)*(dummy-y1);
  237.                 if Temp > MaxInt then
  238.                   Temp := MaxInt
  239.                 else if Temp < $8001 then
  240.                   Temp := $8001;
  241.                 x2:=x1+trunc(Temp);
  242.               end;                                { Changes end here }
  243.               y2:=dummy;
  244.              end;
  245.            end;
  246.  
  247.   RUN-TIME ERROR 92 IN WINDOWX, WINDOWY AND CLIP, Continued:
  248.  
  249.           iy1:=inside(y1,Y1RefGlb,Y2RefGlb);
  250.           iy2:=inside(y2,Y1RefGlb,Y2RefGlb);
  251.           if (iy1<>0) or (iy2<>0) then ClipLoc:=false;
  252.           if ClipLoc then
  253.            begin
  254.             ix1:=inside(x1,X1Loc,X2Loc);
  255.             ix2:=inside(x2,X1Loc,X2Loc);
  256.             if (ix2<>0) or (ix1<>0) then ClipLoc:=false;
  257.            end;
  258.           clip:=ClipLoc;
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  274.   VERSION : 1.05A
  275.        OS : PC-DOS
  276.      DATE : July 8, 1986                                PAGE : 5/18
  277.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  278.  
  279.  
  280.  
  281.  
  282.          end;
  283.        end;
  284.     end;
  285.  
  286.  
  287.                               WORLD COORDINATES
  288.  
  289.   In  Turbo  Graphix  Toolbox version 1.05A,  the Y  coordinates  are
  290.   flipped, positive to negative.   The following patches will reverse  the
  291.   direction of increasing positive Y coordinates.
  292.  
  293.   In KERNEL.SYS change the procedure DefineWorld to read:
  294.  
  295.   procedure DefineWorld(i:integer; X_1,Y_1,X_2,Y_2:real);
  296.     begin
  297.       if ((X_1<>X_2) and (Y_1<>Y_2)) and (i in [1..MaxWorldsGlb]) then
  298.         with world[i] do
  299.          begin
  300.           x1:=X_1;y1:=Y_1;x2:=X_2;y2:=Y_2;
  301.           if i>MaxWorldGlb then MaxWorldGlb:=i;
  302.          end
  303.       else if i in [1..MaxWorldsGlb] then error(1,3)
  304.       else error(1,2);
  305.     end;
  306.  
  307.   In KERNEL.SYS change the procedure ReDefineWindow to read:
  308.  
  309.   procedure ReDefineWindow(i,X_1,Y_1,X_2,Y_2:integer);
  310.     begin
  311.       if (i in [1..MaxWindowsGlb]) and (X_1<=X_2) and (Y_1<=Y_2) and
  312.          (X_1>=0) and (X_2<=XScreenMaxGlb) and (Y_1>=0) and (Y_2<=YMaxGlb)
  313.          then
  314.         with window[i] do
  315.          begin
  316.           x1:=X_1;
  317.           y1:=Y_1;
  318.           x2:=X_2;
  319.           y2:=Y_2;
  320.           if i>MaxWindowGlb then MaxWindowGlb:=i;
  321.          end
  322.       else if i in [1..MaxWindowsGlb] then error(3,3)
  323.       else error(3,2);
  324.     end;
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  340.   VERSION : 1.05A
  341.        OS : PC-DOS
  342.      DATE : July 8, 1986                                PAGE : 6/18
  343.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  344.  
  345.  
  346.  
  347.  
  348.   WORLD COORDINATES, Continued:
  349.  
  350.   Change the File called FINDWRLD.HGH to read:
  351.  
  352.   procedure FindWorld(i:integer;
  353.                       A:PlotArray;
  354.                       NPoints:integer;
  355.                       ScaleX,ScaleY:real);
  356.     var XMax,YMax,XMin,YMin:real;
  357.         j:integer;
  358.  
  359.       xmid, ymid, xdiff, ydiff : real;
  360.     begin
  361.       NPoints:=abs(NPoints);
  362.       if NPoints>=2 then
  363.         if i in [1..MaxWorldsGlb] then
  364.          begin
  365.           XMax:=A[1,1];
  366.           YMax:=A[1,2];
  367.           XMin:=XMax;
  368.           YMin:=YMax;
  369.           for j:=2 to NPoints do
  370.            begin
  371.             if A[j,1]>XMax then XMax:=A[j,1]
  372.             else if A[j,1]<XMin then XMin:=A[j,1];
  373.             if A[j,2]>YMax then YMax:=A[j,2]
  374.             else if A[j,2]<YMin then YMin:=A[j,2];
  375.            end;
  376.           ScaleX:=abs(ScaleX);
  377.           ScaleY:=abs(ScaleY);
  378.           xdiff := xmax - xmin;
  379.           xmid := (xmax + xmin) * 0.5;
  380.           xmax := xmid + scalex * 0.5 * xdiff;
  381.           xmin := xmid - scalex * 0.5 * xdiff;
  382.           ydiff := ymax - ymin;
  383.           ymid := (ymax + ymin) * 0.5;
  384.           ymax := ymid + scaley * 0.5 * ydiff;
  385.           ymin := ymid - scaley * 0.5 * ydiff;
  386.           DefineWorld(i,XMin,YMin,XMax,YMax);
  387.           SelectWorld(i);
  388.          end
  389.         else error(7,2)
  390.       else error(7,4);
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  406.   VERSION : 1.05A
  407.        OS : PC-DOS
  408.      DATE : July 8, 1986                                PAGE : 7/18
  409.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  410.  
  411.  
  412.  
  413.  
  414.     end;
  415.  
  416.   MAKE THE FOLLOWING MODIFICATION TO THE FILE "HISTOGRM.HGH."
  417.  
  418.   (***********************************************************)
  419.   (*                                                         *)
  420.   (*                TURBO GRAPHIX version 1.06A              *)
  421.   (*                                                         *)
  422.   (*                     Bar chart module                    *)
  423.   (*                   Module version 1.06A                  *)
  424.   (*                                                         *)
  425.   (*                  Copyright (C) 1985 by                  *)
  426.   (*                  BORLAND International                  *)
  427.   (*                                                         *)
  428.   (***********************************************************)
  429.  
  430.   procedure DrawHistogram(A :PlotArray; NPoints : integer;
  431.                           Hatching : boolean; HatchStyle : integer);
  432.  
  433.   var
  434.     X1, X2, Y2, NPixels, Delta, NDiff, YRef, LineStyleLoc, I : integer;
  435.     Fract, S, Y, YAxis : real;
  436.     DirectModeLoc, Negative : boolean;
  437.     Wtemp : WindowType;
  438.     X1Loc, Y1Loc, X2Loc, Y2Loc : integer;
  439.  
  440.   function Balance : integer;
  441.   begin
  442.     Balance := 0;
  443.     S := S + Fract;
  444.     if S >= 0.0 then
  445.     begin
  446.       S := S - 1.0;
  447.       Balance := 1;
  448.     end;
  449.   end; { Balance }
  450.  
  451.   begin { DrawHistogram }
  452.     if abs(NPoints) >= 2 then
  453.       begin
  454.         X1Loc := X1Glb;
  455.         Y1Loc := Y1Glb;
  456.         X2Loc := X2Glb;
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  472.   VERSION : 1.05A
  473.        OS : PC-DOS
  474.      DATE : July 8, 1986                                PAGE : 8/18
  475.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  476.  
  477.  
  478.  
  479.  
  480.         Y2Loc := Y2Glb;
  481.         LineStyleLoc := LinestyleGlb;
  482.         SetLineStyle(0);
  483.         if AxisGlb then
  484.  
  485.   BAR CHART MODULE, CONTINUED
  486.  
  487.           begin
  488.           Wtemp := Window[WindowNdxGlb];
  489.           ReDefineWindow(WindowNdxGlb,   X1RefGlb   +  4  +  X1Glb,
  490.             Y1RefGlb  +  6 +  Y1Glb,  X2RefGlb  - 2  - X2Glb, Y2RefGlb
  491.             - 14 - Y2Glb);
  492.           SelectWindow(WindowNdxGlb);
  493.           AxisGlb := true;
  494.         end;
  495.         DirectModeLoc := DirectModeGlb;
  496.         DirectModeGlb := true;
  497.         Negative := NPoints < 0;
  498.         NPoints := abs(NPoints);
  499.         NPixels := (X2RefGlb - X1RefGlb) shl 3 + 7;
  500.         Delta := NPixels div NPoints;
  501.         NDiff := NPixels - Delta * NPoints;
  502.         Fract := NDiff / NPoints;
  503.         S := -Fract;
  504.         X1 := X1RefGlb shl 3;
  505.         YRef := trunc(Y2RefGlb + Y1RefGlb - AyGlb);
  506.         if Negative then
  507.           DrawStraight(X1, X2RefGlb shl 3 + 7, YRef);
  508.         YAxis := Y1RefGlb;
  509.         if BYGlb > 0 then
  510.           YAxis := Y2RefGlb;
  511.         for I := 1 to NPoints do
  512.         begin
  513.           X2 := X1 + Delta + Balance;
  514.           Y := A[I, 2];
  515.           if not Negative then
  516.             Y := abs(Y);
  517.                  <-----------------------------------|
  518.           if AxisGlb then                            |
  519.             Y2 := trunc(AyGlb + ByGlb * Y)           |
  520.           else                                       |-{ DELETE }
  521.             Y2 := trunc((AyGlb + ByGlb * Y) * 0.99); | { THIS }
  522.           Y2 := Y2RefGlb + Y1RefGlb - Y2;            | { BLOCK }
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  538.   VERSION : 1.05A
  539.        OS : PC-DOS
  540.      DATE : July 8, 1986                                PAGE : 9/18
  541.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  542.  
  543.  
  544.  
  545.  
  546.                  <-----------------------------------|
  547.  
  548.           { ADD THE FOLLOWING LINE }
  549.           Y2 := Y2RefGlb + Y1RefGlb - (trunc(AyGlb + ByGlb * Y));
  550.  
  551.   BAR CHART MODULE, CONTINUED
  552.  
  553.           if not Negative then
  554.             begin
  555.               DrawLine(X1, YAxis, X1, Y2);
  556.               DrawStraight(X1, X2, Y2);
  557.               DrawLine(X2, Y2, X2, YAxis);
  558.               if Hatching then
  559.                 if Odd(I) then
  560.                   Hatch(X1, Y2, X2, YAxis, HatchStyle)
  561.                 else
  562.                   Hatch(X1, Y2, X2, YAxis, -HatchStyle);
  563.             end
  564.           else
  565.             begin
  566.               DrawLine(X1, YRef, X1, Y2);
  567.               DrawStraight(X1, X2, Y2);
  568.               DrawLine(X2, Y2, X2, YRef);
  569.               if Hatching then
  570.                 if YRef - Y2 < 0 then
  571.                   if Odd(I) then
  572.                     Hatch(X1, YRef, X2, Y2, HatchStyle)
  573.                   else
  574.                     Hatch(X1, YRef, X2, Y2, -HatchStyle)
  575.                 else
  576.                   if Odd(I) then
  577.                     Hatch(X1, Y2, X2,YRef, HatchStyle)
  578.                   else
  579.                     Hatch(X1, Y2, X2, YRef, -HatchStyle);
  580.             end;
  581.           X1 := X2;
  582.         end;
  583.         if AxisGlb then
  584.         begin
  585.           Window[WindowNdxGlb] := Wtemp;
  586.           SelectWindow(WindowNdxGlb);
  587.           X1Glb := X1Loc;
  588.           Y1Glb := Y1Loc;
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  604.   VERSION : 1.05A
  605.        OS : PC-DOS
  606.      DATE : July 8, 1986                               PAGE : 10/18
  607.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  608.  
  609.  
  610.  
  611.  
  612.           X2Glb := X2Loc;
  613.           Y2Glb := Y2Loc;
  614.           AxisGlb := false;
  615.         end;
  616.         DirectModeGlb := DirectModeLoc;
  617.         SetLineStyle(LineStyleLoc);
  618.       end
  619.     else
  620.       Error(19, 4);
  621.   end; { DrawHistogram }
  622.  
  623.   ADD  THE  FOLLOWING VARIABLE TO  THE  FILE  "TYPEDEF.SYS."
  624.  
  625.  
  626.   WorldNdxGlb : integer;
  627.  
  628.   { IN THE FILE CALLED "KERNEL.SYS" MODIFY THE PROCEDURE CALLED,
  629.   "SelectWorld" as follows. }
  630.  
  631.   procedure SelectWorld(I : integer);
  632.   begin
  633.     if (I in [1..MaxWorldGlb]) then
  634.       with World[I] do
  635.       begin
  636.         WorldNdxGlb := I; <----------------{ ADD THIS LINE }
  637.         X1WldGlb := X1;
  638.         Y1WldGlb := Y1;
  639.         X2WldGlb := X2;
  640.         Y2WldGlb := Y2;
  641.       end
  642.     else
  643.       Error(2, 2);
  644.   end; { SelectWorld }
  645.  
  646.   IN   THE   FILE   CALLED   "POLYGON.HGH"   MAKE   THE   FOLLOWING
  647.   MODIFICATIONS.
  648.  
  649.        (***********************************************************)
  650.        (*                                                         *)
  651.        (*                TURBO GRAPHIX version 1.06A              *)
  652.        (*                                                         *)
  653.        (*                  Polygon drawing module                 *)
  654.        (*                   Module version 1.06A                  *)
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  670.   VERSION : 1.05A
  671.        OS : PC-DOS
  672.      DATE : July 8, 1986                               PAGE : 11/18
  673.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  674.  
  675.  
  676.  
  677.  
  678.        (*                                                         *)
  679.        (*                  Copyright (C) 1985 by                  *)
  680.        (*                  BORLAND International                  *)
  681.        (*                                                         *)
  682.        (***********************************************************)
  683.  
  684.   procedure DrawPolygon(A :  PlotArray;I0,  NPoints,  Line,  Scale,
  685.   Lines : integer);
  686.   var
  687.     I, X1, X2, Y1, Y2, XOffset, YOffset,
  688.     X1RefLoc, Y1RefLoc, X2RefLoc, Y2RefLoc,
  689.     DeltaY, XOs1, XOs2, YOs1, YOs2 : integer;
  690.     AutoClip, DirectModeLoc, PlotLine, PlotSymbol : boolean;
  691.     X1Loc, Y1Loc, X2Loc, Y2Loc : integer;
  692.     Temp : real; <-------------|
  693.     Flipped  :  boolean;  <----|----------{ ADD THESE TWO VARIABLES }
  694.  
  695.   procedure DrawPointClipped(X, Y : integer);
  696.   begin
  697.     if (X1 > X1RefGlb shl 3) and (X2 < X2RefGlb shl 3 + 7) then
  698.       if (Y1 > Y1RefGlb) and (Y2 < Y2RefGlb) then
  699.         DP(X, Y);
  700.   end; { DrawPointClipped }
  701.  
  702.   procedure DrawItem(X, Y : integer);
  703.   var
  704.     LineStyleLoc : integer;
  705.   begin
  706.     LineStyleLoc := LineStyleGlb;
  707.     SetLineStyle(0);
  708.  
  709.   POLYGON DRAWING MODULE, CONTINUED
  710.  
  711.       case Line of
  712.       2    : DrawCrossDiag(X, Y, Scale);
  713.       3,  4  :  DrawSquareC(X - Scale,  Y + Scale,  X + Scale,  Y -
  714.   Scale, (Line = 4));
  715.       5    : DrawDiamond(X, Y, Scale + 1);
  716.       6    : DrawWye(X, Y, Scale + 1);
  717.       1    : DrawCross(X, Y, Scale);
  718.       8    : DrawCircleDirect(X, Y, Scale + 1, false);
  719.       9    : begin
  720.                PlotLine := false;
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  736.   VERSION : 1.05A
  737.        OS : PC-DOS
  738.      DATE : July 8, 1986                               PAGE : 12/18
  739.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  740.  
  741.  
  742.  
  743.  
  744.                if AutoClip then
  745.                  DrawPointClipped(X, Y)
  746.                else
  747.                  DP(X, Y);
  748.              end;
  749.        7   : DrawStar(X, Y, Scale);
  750.      end;
  751.      SetLineStyle(LineStyleLoc);
  752.    end; { DrawItem }
  753.  
  754.   begin { DrawPolygon }
  755.                      <-------------------|
  756.     if not AxisGlb then                  |
  757.       begin                              |
  758.         with World[WorldNdxGlb] do       |
  759.         begin                            |
  760.           Temp := Y1;                    |
  761.           Y1 := Y2;                      |
  762.           Y2 := Temp;                    |------{ ADD THIS BLOCK }
  763.         end;                             |
  764.         SelectWorld(WorldNdxGlb);        |
  765.         SelectWindow(WindowNdxGlb);      |
  766.         Flipped := true;                 |
  767.       end                                |
  768.     else                                 |
  769.       Flipped := false;                  |
  770.                      <-------------------|
  771.     if abs(NPoints - I0) >= 2 then
  772.     begin
  773.       X1Loc := X1Glb;
  774.       Y1Loc := Y1Glb;
  775.       X2Loc := X2Glb;
  776.       Y2Loc := Y2Glb;
  777.       DirectModeLoc := DirectModeGlb;
  778.       DirectModeGlb := true;
  779.       AutoClip := (NPoints < 0);
  780.       NPoints := abs(NPoints);
  781.  
  782.   POLYGON DRAWING MODULE, CONTINUED
  783.       XOs1 := 1;
  784.       XOs2 := 1;
  785.  
  786.       YOs1 := 6;
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  802.   VERSION : 1.05A
  803.        OS : PC-DOS
  804.      DATE : July 8, 1986                               PAGE : 13/18
  805.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  806.  
  807.  
  808.  
  809.  
  810.       YOs2 := 6;
  811.       if AxisGlb then
  812.       begin
  813.         XOs1 := 4;
  814.         XOs2 := 2;
  815.         YOs1 := 6;
  816.         YOs2 := 14;
  817.         if  (((X2RefGlb  + 7 - XOs2 - X1RefGlb + XOs1)  >  (XOs1  +
  818.                XOs2)  shl 1) and (Y2RefGlb - YOs2 - Y1RefGlb + YOs1  >
  819.                (YOs1 + YOs2) shl 1)) then
  820.         begin
  821.           X1RefLoc := X1RefGlb;
  822.           X1 := X1RefGlb + XOs1 + X1Glb;
  823.           Y1RefLoc := Y1RefGlb;
  824.           Y1 := Y1RefGlb + YOs1 + Y1Glb;
  825.           X2RefLoc := X2RefGlb;
  826.           X2 := X2RefGlb - XOs2 - X2Glb;
  827.           Y2RefLoc := Y2RefGlb;
  828.           Y2 := Y2RefGlb - YOs2 - Y2Glb;
  829.           ReDefineWindow(WindowNdxGlb, X1, Y1, X2, Y2);
  830.           SelectWindow(WindowNdxGlb);
  831.           AxisGlb := true;
  832.         end;
  833.       end;
  834.       PlotLine := (Line >= 0);
  835.       PlotSymbol := (Line <> 0);
  836.       Line := abs(Line);
  837.       Scale := abs(Scale);
  838.       if Lines < 0 then
  839.         DeltaY := Trunc(1.0 / (abs(Y1WldGlb) + abs(Y2WldGlb)) *
  840.                                abs(Y1WldGlb) * abs(Y2RefGlb -
  841.                                Y1RefGlb)) + 1
  842.       else
  843.         DeltaY := 0;
  844.       if (NPoints < 2) and MessageGlb then
  845.         Writeln('<DrawPolygon>: too few data pairs  -> (NPoints) >= 2')
  846.       else
  847.  
  848.           begin
  849.           X1 := WindowX(A[I0, 1]);
  850.           Y1 := Y2RefGlb + Y1RefGlb - WindowY(A[I0, 2]);
  851.           DrawItem(X1, Y1);
  852.           if Abs(Lines) = 1 then
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  868.   VERSION : 1.05A
  869.        OS : PC-DOS
  870.      DATE : July 8, 1986                               PAGE : 14/18
  871.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  872.  
  873.  
  874.  
  875.  
  876.   POLYGON DRAWING MODULE, CONTINUED
  877.  
  878.           if AutoClip then
  879.               DrawLineClipped(X1, Y2RefGlb - DeltaY, X1, Y1)
  880.             else
  881.               DrawLine(X1, Y2RefGlb - DeltaY, X1, Y1);
  882.           for I:= I0 + 1 to NPoints do
  883.           begin
  884.             X2 := WindowX(A[I, 1]);
  885.             Y2 := Y2RefGlb + Y1RefGlb - WindowY(A[I, 2]);
  886.             DrawItem(X2, Y2);
  887.             if Abs(Lines) = 1 then
  888.               if AutoClip then
  889.                 DrawLineClipped(X2, Y2RefGlb - DeltaY, X2, Y2)
  890.               else
  891.                 DrawLine(X2, Y2RefGlb - DeltaY, X2, Y2);
  892.             if PlotLine then
  893.               if AutoClip then
  894.                 DrawLineClipped(X1, Y1, X2, Y2)
  895.               else
  896.                 DrawLine(X1, Y1, X2, Y2);
  897.             X1 := X2;
  898.             Y1 := Y2;
  899.           end;
  900.         end;
  901.       if AxisGlb then
  902.       begin
  903.         ReDefineWindow(WindowNdxGlb,  X1RefLoc, Y1RefLoc, X2RefLoc,
  904.         Y2RefLoc);
  905.         SelectWindow(WindowNdxGlb);
  906.         X1Glb := X1Loc;
  907.         Y1Glb := Y1Loc;
  908.         X2Glb := X2Loc;
  909.         Y2Glb := Y2Loc;
  910.         AxisGlb := false;
  911.       end;
  912.       DirectModeGlb := DirectModeLoc;
  913.     end
  914.     else
  915.       Error(18, 4);
  916.  
  917.   POLYGON DRAWING MODULE, CONTINUED
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  934.   VERSION : 1.05A
  935.        OS : PC-DOS
  936.      DATE : July 8, 1986                               PAGE : 15/18
  937.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  938.  
  939.  
  940.  
  941.  
  942.                      <-------------------|
  943.     if Flipped then                      |
  944.       begin                              |
  945.         with World[WorldNdxGlb] do       |
  946.         begin                            |
  947.           Temp := Y1;                    |
  948.           Y1 := Y2;                      |
  949.           Y2 := Temp;                    |------{ ADD THIS BLOCK }
  950.         end;                             |
  951.         SelectWorld(WorldNdxGlb);        |
  952.         SelectWindow(WindowNdxGlb);      |
  953.       end;                               |
  954.                      <-------------------|
  955.   end; { DrawPolygon }
  956.  
  957.                          WINDOW MOVE UPDATE
  958.  
  959.   The following code modifications enable the Turbo Graphix Toolbox
  960.   to properly display text after doing a move window.
  961.  
  962.  
  963.   In the procedure MoveVer in the file WINDOWS.SYS
  964.  
  965.     Change from:
  966.          Y1RefGlb := Y1RefGlb + HeaderSizeGlb
  967.        else
  968.          Y2RefGlb := Y2RefGlb - HeaderSizeGlb;
  969.      end;
  970.    end; { MoveVer }
  971.  
  972.  
  973.     Change to:
  974.          Y1RefGlb := Y1RefGlb + HeaderSizeGlb
  975.        else
  976.          Y2RefGlb := Y2RefGlb - HeaderSizeGlb;
  977.        ReDefineWindow(WindowNdxGlb,  X1RefGlb,  Y1RefGlb, X2RefGlb,
  978.                       Y2RefGlb);    { addition ver. 1.06A }
  979.        SelectWindow(WindowNdxGlb);  { addition ver. 1.06A }
  980.      end;
  981.    end; { MoveVer }
  982.  
  983.   In the procedure MoveHor in the WINDOWS.SYS:
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  1000.   VERSION : 1.05A
  1001.        OS : PC-DOS
  1002.      DATE : July 8, 1986                               PAGE : 16/18
  1003.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  1004.  
  1005.  
  1006.  
  1007.  
  1008.     Change from:
  1009.       if Top then
  1010.         Y1RefGlb := Y1RefGlb + HeaderSizeGlb
  1011.       else
  1012.         Y2RefGlb := Y2RefGlb - HeaderSizeGlb;
  1013.     end;
  1014.   end; { MoveHor }
  1015.  
  1016.     Change to:
  1017.       if Top then
  1018.         Y1RefGlb := Y1RefGlb + HeaderSizeGlb
  1019.       else
  1020.         Y2RefGlb := Y2RefGlb - HeaderSizeGlb;
  1021.       ReDefineWindow(WindowNdxGlb,  X1RefGlb,  Y1RefGlb,  X2RefGlb,
  1022.                        Y2RefGlb);    { addition ver. 1.06A }
  1023.       SelectWindow(WindowNdxGlb);  { addition ver. 1.06A }
  1024.     end;
  1025.   end; { MoveHor }
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.